---
title: VR
slug: /vr
sidebar_position: 6
---

:::info
VR은 [Secure contexts](https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts) 내에서만 사용 가능합니다. 작동하지 않을 경우 서버에서 TLS/SSL(HTTPS) 기능을 활성화해보세요.
:::

[view360.vr.enter()](/docs/api/Class/XRManager#enter) 호출을 통해 VR 세션에 진입 가능합니다.
[LittlePlanetProjection](/docs/projections/littleplanet)을 제외한 모든 프로젝션에서 VR을 지원합니다.

```js
const view360 = new View360(...);

// 버튼 클릭 핸들러 등에서 호출해주세요
view360.vr.enter();
```

## 준비물 (뷰어 사용자용)
VR 기능을 사용하기 위해선 특수한 기기가 필요합니다.
사용자는 VR을 사용하기 위해 반드시 다음 기기들 중 하나를 보유해야 합니다.
- 스마트폰 + [Cardboard VR 헤드셋](https://arvr.google.com/cardboard/)
- 헤드마운트 디스플레이 (HMD)
  - [Meta Quest 2](https://www.meta.com/kr/quest/products/quest-2/)가 대표적인 HMD 기기입니다.

## WebXR API & WebVR API (deprecated)
- View360은 WebXR API만을 지원하며, WebVR API는 지원하지 않습니다.
- WebXR이 지원되지 않는 환경에서 [webxr-polyfill](https://github.com/immersive-web/webxr-polyfill) 사용을 고려해보실 수 있습니다.

## iOS
iOS의 경우, 현재 이 문서를 작성하는 시점에 모든 버젼에서 WebXR Device API를 지원하지 않습니다.
때문에, iOS에서는 기본적으로 VR 기능을 사용할 수 없으며, [ControlBar](/docs/plugins/ControlBar) 플러그인에서도 VR 버튼이 표시되지 않을 것입니다.
WebXR Polyfill 사용을 시도해보실 수 있으나, 다음과 같은 이유때문에 완벽하게 동작하진 않을 것입니다.

### Fullscreen
- iOS 환경에서는 브라우저와 상관없이 [Fullscreen API](https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API)를 지원하지 않습니다.
- VR을 제대로 렌더링하기 위해서는 풀스크린 API가 있어야 합니다. 그렇지 않고서는 주소 창에 의해 가려지는 등 VR 콘텐츠를 제대로 표시할 수 없는 경우가 발생합니다.
- 때문에, iOS 환경 한정으로 동일 기능을 제공하는 네이티브 iOS 앱으로 연결하거나, 혹은 PWA 사용을 고려해보실 수 있습니다.

### iOS 13+
- 폴리필을 사용하시는 경우를 고려해서, View360은 VR 진입 전에 DeviceMotion Permission을 수령했는지 여부를 체크하고 있습니다.
- 때문에, VR 진입 전에 Permission 체크를 수행하지 않았다면, `vr.enter()`를 호출하면 사용자에게 DeviceMotion 사용 허가를 수락할지 여부를 묻는 창이 뜰 수 있습니다.
